package Action;

import Forms.ArbolInicioForm;
import beans.Nodo;
import beans.Pareja;
import hibernate.NodoBD;
import hibernate.ParejaBD;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 *
 * @author Antonio
 */
public class NuevoHijoAction extends Action {

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) 
            throws Exception {
        
        
        //Capturamos el form y el bean
        ArbolInicioForm inicioForm = (ArbolInicioForm)form;
        Nodo nodo = inicioForm.getNodo();
        //Capturamos la pareja a la que pertenece el nodo
        String idS = request.getParameter("idPareja");
        long id =  Long.valueOf(idS);
        
        //Añadimos la fecha de nacimiento
        nodo.setFechaNacimiento(inicioForm.getFechaNacimiento());
        String muerto = request.getParameter("muerto");
        //Si se ha añadido fecha de defunción se añade la fecha
        if (muerto.equals("si"))
            nodo.setFechaDefuncion(inicioForm.getFechaDefuncion());
        else//sino null
            nodo.setFechaDefuncion(null);
        //Recuperamos el nodo Actual
        Nodo nodoActual = (Nodo)request.getSession().getAttribute("nodoActual");
        //y al hijo le añadimos el mismo arbol que al actual
        nodo.setArbol(nodoActual.getArbol());
        Pareja laqueBusco = null;
        
        //Recupero la pareja del nodo Actual a la que añadir el hijo
        for (Object obj:nodoActual.getParejas())
        {
            Pareja par = (Pareja)obj;
            if (par.getIdPareja() == id)
                laqueBusco = par;
        }
        //Si la encontré...
        if (laqueBusco != null)
        {
            //...creo una parejaBD con la pareja a la que le voy a añadir el hijo
            ParejaBD parejabd = new ParejaBD(laqueBusco);
            
            parejabd.insertaHijos(nodo);
            //recupero el nodo Actual y lo añado en sesion
            NodoBD nbd = new NodoBD(nodoActual);               
            Nodo nuevoNodo = nbd.devuelveNodo(nodoActual.getIdNodo());
            request.getSession().setAttribute("nodoActual", nuevoNodo);            
        }
        return mapping.findForward("ok");
        
    }

    
}
